package com.quan.mall.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;


import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
import javax.validation.constraints.NotNull;
import com.quan.commons.core.bean.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * 订单
 *
 * @author yhaoquan
 * @email yhaoquan@163.com
 * @date 2021-03-26 13:03:26
 */
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@TableName("oms_order")
public class OmsOrder extends BaseEntity implements Serializable {
	private static final long serialVersionUID = 1L;

	/**
	 * 订单ID
	 */
    @TableId
    private Long id;

	/**
	 * APPID
	 */
    private String appId;

	/**
	 * 商户号
	 */
    private String mchId;

	/**
	 * OPENID
	 */
    private String openId;

	/**
	 * 订单编号，作为微信商户订单号
	 */
    private String orderSn;

	/**
	 * 代理商ID
	 */
	private Long agentId;

	/**
	 * 推荐会员ID
	 */
    private Long refereeMemberId;

	/**
	 * 会员ID
	 */
    private Long memberId;

	/**
	 * 会员名称
	 */
    private String memberUsername;

	/**
	 * 会员手机号
	 */
    private String memberPhone;

	/**
	 * 使用的优惠券
	 */
    private Long couponId;

	/**
	 * 商品总数量
	 */
	private Integer totalCount;

	/**
	 * 订单总额
	 */
    private BigDecimal totalAmount;

	/**
	 * 应付总额
	 */
    private BigDecimal payAmount;

	/**
	 * 运费金额
	 */
    private BigDecimal freightAmount;

	/**
	 * 快递方式：包邮，到付
	 */
	private String freightType;

	/**
	 * 促销优惠金额（促销价、满减、阶梯价）
	 */
    private BigDecimal promotionAmount;

	/**
	 * 积分抵扣金额
	 */
    private BigDecimal integrationAmount;

	/**
	 * 优惠券抵扣金额
	 */
    private BigDecimal couponAmount;

	/**
	 * 后台调整订单使用的折扣金额
	 */
    private BigDecimal discountAmount;

	/**
	 * 订单类型：0->普通订单（实物订单，非实物订单（非实物订单不享受任何折扣）），1->活动订单，2->拼团订单，3->秒杀订单，4->砍价订单，4->核销订单
	 */
    private Integer orderType;

	/**
	 * 支付方式：0->支付宝；1->微信；2->银联； 3->货到付款
	 */
    private Integer payType;

	/**
	 * 订单来源：0->PC订单，1->微信订单，2->APP订单
	 */
    private Integer sourceType;

	/**
	 * 订单状态：0->待付款，1->待发货，2->已发货，3->已完成，4->已关闭（收到关闭订单，退货退款成功，关闭后将不显示申请退款按钮）
	 */
    private Integer status;

	/**
	 * 核销状态：0->未核销，1->已核销
	 */
    private Integer confirmStatus;

	/**
	 * 是否支付：0->未支付，1->已支付
	 */
    private Integer isPay;

	/**
	 * 申请退款：0->否，1->是
	 */
    private Integer isRefund;

	/**
	 * 发货方：1->系统发货，2->代理商发货
	 */
	private Integer shipType;

	/**
	 * 收货方式：0->送货上门，1->到店自提（无需快递）
	 */
    private Integer deliverType;

	/**
	 * 物流公司
	 */
    private String deliveryCompany;

	/**
	 * 物流单号
	 */
    private String deliverySn;

	/**
	 * 发货时间
	 */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime deliveryTime;

	/**
	 * 自动确认时间（天）
	 */
    private Integer autoConfirmDay;

	/**
	 * 可以获得的积分
	 */
    private Integer integration;

	/**
	 * 可以获得的成长值
	 */
    private Integer growth;

	/**
	 * 发票类型：0->不开发票；1->电子发票；2->纸质发票
	 */
    private Integer billType;

	/**
	 * 发票抬头
	 */
    private String billHeader;

	/**
	 * 发票内容
	 */
    private String billContent;

	/**
	 * 收票人电话
	 */
    private String billReceiverPhone;

	/**
	 * 收票人邮箱
	 */
    private String billReceiverEmail;

	/**
	 * 收货人姓名
	 */
    private String receiverName;

	/**
	 * 收货人电话
	 */
    private String receiverPhone;

	/**
	 * 收货人邮编
	 */
    private String receiverPostCode;

	/**
	 * 省份/直辖市
	 */
    private String receiverProvince;

	/**
	 * 城市
	 */
    private String receiverCity;

	/**
	 * 区
	 */
    private String receiverRegion;

	/**
	 * 详细地址
	 */
    private String receiverDetailAddress;

	/**
	 * 买家留言
	 */
    private String note;

	/**
	 * 订单备注
	 */
    private String remarks;

	/**
	 * 下单时使用的积分
	 */
    private Integer useIntegration;

	/**
	 * 支付完成时间
	 */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime paymentTime;

	/**
	 * 微信支付成功返回的订单号
	 */
    private String transactionId;

	/**
	 * 支付商品描述
	 */
    private String paymentBody;

	/**
	 * 确认收货时间
	 */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime receiveTime;

	/**
	 * 订单附加信息
	 */
    private String extraJson;

	/**
	 * 创建时间
	 */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime ctime;

	/**
	 * 最后更新时间
	 */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime utime;


}
